import MarkdownIt from 'markdown-it';
import hljs from 'highlight.js';
import 'highlight.js/styles/github.css'; // 引入代码高亮样式

// 创建 markdown-it 实例
const md = new MarkdownIt({
  html: true,        // 启用 HTML 标签
  linkify: true,     // 自动转换链接
  typographer: true, // 启用一些语言中性的替换 + 引号美化
  breaks: true,      // 转换段落里的 '\n' 到 <br>
  highlight: function (str, lang) {
    // 代码高亮
    if (lang && hljs.getLanguage(lang)) {
      try {
        return '<pre class="hljs"><code>' +
               hljs.highlight(str, { language: lang, ignoreIllegals: true }).value +
               '</code></pre>';
      } catch (__) {}
    }

    return '<pre class="hljs"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
  }
});

// 自定义渲染规则
md.renderer.rules.table_open = function () {
  return '<table class="markdown-table">';
};

md.renderer.rules.code_inline = function (tokens, idx) {
  const token = tokens[idx];
  return '<code class="inline-code">' + md.utils.escapeHtml(token.content) + '</code>';
};

// 导出渲染函数
export const renderMarkdown = (content: string): string => {
  return md.render(content);
};

// 导出 markdown-it 实例，以便需要时进行更多自定义
export default md;